@@ -239,6 +239,7 @@ |
||
| 239 | 239 |
|
| 240 | 240 |
.mission-agent-status {
|
| 241 | 241 |
height: 220px; |
| 242 |
+ padding: 8px; |
|
| 242 | 243 |
} |
| 243 | 244 |
|
| 244 | 245 |
.open-agent-role {
|
@@ -246,7 +247,11 @@ |
||
| 246 | 247 |
text-align: center; |
| 247 | 248 |
} |
| 248 | 249 |
|
| 249 |
-.open-agent-role p {
|
|
| 250 |
+.assigned-agent-role {
|
|
| 251 |
+ background-color: @bg-ligh-gray; |
|
| 252 |
+} |
|
| 253 |
+ |
|
| 254 |
+.mission-agent-status p.agent-description {
|
|
| 250 | 255 |
font-family: Helvetica-LightOblique; |
| 251 | 256 |
font-size: 14px; |
| 252 | 257 |
color: #1D1D26; |
@@ -256,4 +261,32 @@ |
||
| 256 | 261 |
.open-agent-role .btn-spacer {
|
| 257 | 262 |
padding-top: 55px; |
| 258 | 263 |
padding-bottom: 70px; |
| 259 |
-} |
|
| 264 |
+} |
|
| 265 |
+ |
|
| 266 |
+.mission-agent-status h4 {
|
|
| 267 |
+ margin-bottom: 2px; |
|
| 268 |
+} |
|
| 269 |
+ |
|
| 270 |
+.mission-agent-status p {
|
|
| 271 |
+ font-family: Avenir-Light; |
|
| 272 |
+ font-size: 21px; |
|
| 273 |
+ color: #1D1D26; |
|
| 274 |
+ line-height: 29px; |
|
| 275 |
+} |
|
| 276 |
+ |
|
| 277 |
+.mission-agent-status p.agent-stats {
|
|
| 278 |
+ font-family: Avenir-Medium; |
|
| 279 |
+ font-size: 14px; |
|
| 280 |
+ color: #1D1D26; |
|
| 281 |
+ line-height: 19px; |
|
| 282 |
+} |
|
| 283 |
+ |
|
| 284 |
+.agent-points {
|
|
| 285 |
+ font-size: 21px; |
|
| 286 |
+ padding-right: 3px; |
|
| 287 |
+} |
|
| 288 |
+ |
|
| 289 |
+p.agent-stats i {
|
|
| 290 |
+ font-size: 30px; |
|
| 291 |
+ padding-right: 10px; |
|
| 292 |
+} |
@@ -70,6 +70,22 @@ class MissionsController < ApplicationController |
||
| 70 | 70 |
format.json { head :no_content }
|
| 71 | 71 |
end |
| 72 | 72 |
end |
| 73 |
+ |
|
| 74 |
+ def take_agent_role |
|
| 75 |
+ mission = Mission.find(params[:id]) |
|
| 76 |
+ agent = mission.mission_agents.find(params[:agent]) |
|
| 77 |
+ candidate = MissionCandidate.create!(user: current_user, mission_agent: agent, status: 'closed', mode: 'take_agent_role') |
|
| 78 |
+ agent.user = current_user |
|
| 79 |
+ respond_to do |format| |
|
| 80 |
+ if agent.save |
|
| 81 |
+ format.html { redirect_to mission_agent_details_path(mission, agent), notice: (t 'mission.take_agent_profile_confirmation') }
|
|
| 82 |
+ format.json { head :no_content }
|
|
| 83 |
+ else |
|
| 84 |
+ format.html { redirect_to mission_agent_details_path(mission, agent), alert: (t 'mission.take_agent_profile_error') }
|
|
| 85 |
+ format.json { render json: @mission.errors, status: :unprocessable_entity }
|
|
| 86 |
+ end |
|
| 87 |
+ end |
|
| 88 |
+ end |
|
| 73 | 89 |
|
| 74 | 90 |
private |
| 75 | 91 |
# Use callbacks to share common setup or constraints between actions. |
@@ -7,4 +7,13 @@ class MissionAgent < ActiveRecord::Base |
||
| 7 | 7 |
|
| 8 | 8 |
accepts_nested_attributes_for :agent_steps, allow_destroy:true |
| 9 | 9 |
accepts_nested_attributes_for :mission_candidates |
| 10 |
+ |
|
| 11 |
+ def is_assigned |
|
| 12 |
+ if self.mission_candidates.find_all_by_status(1).last == nil |
|
| 13 |
+ return false |
|
| 14 |
+ else |
|
| 15 |
+ return true |
|
| 16 |
+ end |
|
| 17 |
+ end |
|
| 18 |
+ |
|
| 10 | 19 |
end |
@@ -21,10 +21,8 @@ |
||
| 21 | 21 |
<%= content_tag(:div, class: 'container container-last') do %> |
| 22 | 22 |
<%= content_tag(:div, class: 'row') do %> |
| 23 | 23 |
<%= content_tag(:div, class: 'span12') do %> |
| 24 |
- <%= bootstrap_flash %> |
|
| 25 |
- |
|
| 26 | 24 |
<% # Page Content %> |
| 27 |
- |
|
| 25 |
+ <%= bootstrap_flash %> |
|
| 28 | 26 |
<%= content_tag(:div, class: 'page-header page-header-type') do %> |
| 29 | 27 |
<%= content_tag(:small, (t 'mission.agent')+':') %> |
| 30 | 28 |
<%= content_tag(:h2) do %> |
@@ -41,11 +39,34 @@ |
||
| 41 | 39 |
<%= @agent.briefing.html_safe %> |
| 42 | 40 |
<% end %> |
| 43 | 41 |
<%= content_tag(:div, class: 'span4') do %> |
| 44 |
- <%= content_tag(:div, class: 'mission-agent-status open-agent-role') do %> |
|
| 45 |
- <%= content_tag(:div, class: 'btn-spacer') do %> |
|
| 46 |
- <%= link_to (t 'mission.take_agent_role'), '#', class: 'btn btn-large' %> |
|
| 42 |
+ <% if @agent.is_assigned %> |
|
| 43 |
+ <%= content_tag(:div, class: 'mission-agent-status assigned-agent-role') do %> |
|
| 44 |
+ <%= content_tag(:h4, (t 'mission.agent')+':') %> |
|
| 45 |
+ <%= content_tag(:div, class: 'pull-left') do %> |
|
| 46 |
+ <%= content_tag(:p, @agent.user.full_name) %> |
|
| 47 |
+ <%= content_tag(:p, ('<i class="icon-mission"></i><span> ' + 5.to_s + ' ' + (t 'agent.missions_acomplished')).html_safe, class: 'agent-stats') %>
|
|
| 48 |
+ <%= content_tag(:p, ('<i class="icon-radar"></i><span> ' + 2.to_s + ' ' + (t 'agent.missions_directed')).html_safe, class: 'agent-stats') %>
|
|
| 49 |
+ <%= content_tag(:p, ('<span class="agent-points">' + 19.to_s + 'K</span> ' + (t 'agent.points')).html_safe, class: 'agent-stats') %>
|
|
| 50 |
+ <% end %> |
|
| 51 |
+ <%= content_tag(:div, class: 'pull-right') do %> |
|
| 52 |
+ <% if @agent.user.avatar.file != nil %> |
|
| 53 |
+ <%= image_tag @agent.user.avatar.to_s, size: "115x115", :class => 'img-circle' %> |
|
| 54 |
+ <% else %> |
|
| 55 |
+ <%= image_tag "user.png", size: "115x115", :class => 'img-circle' %> |
|
| 56 |
+ <% end %> |
|
| 57 |
+ <% end %> |
|
| 58 |
+ <%= content_tag(:div, '', class: 'clearfix') %> |
|
| 59 |
+ <%= content_tag(:div, class: 'mission-agent-bio') do %> |
|
| 60 |
+ <%= content_tag(:p, 'Hacker from São Paulo Brazil. Avalanche programer and Designer.', class: 'agent-description') %> |
|
| 61 |
+ <% end %> |
|
| 62 |
+ <% end %> |
|
| 63 |
+ <% else %> |
|
| 64 |
+ <%= content_tag(:div, class: 'mission-agent-status open-agent-role') do %> |
|
| 65 |
+ <%= content_tag(:div, class: 'btn-spacer') do %> |
|
| 66 |
+ <%= link_to (t 'mission.take_agent_role'), take_agent_role_path(@mission, @agent), class: 'btn btn-large' %> |
|
| 67 |
+ <% end %> |
|
| 68 |
+ <%= content_tag(:p, 'This agent role is open for the first user that apply for it.', class: 'agent-description') %> |
|
| 47 | 69 |
<% end %> |
| 48 |
- <%= content_tag(:p, 'This agent role is open for the first user that apply for it.') %> |
|
| 49 | 70 |
<% end %> |
| 50 | 71 |
<% end %> |
| 51 | 72 |
<% end %> |
@@ -71,7 +71,7 @@ |
||
| 71 | 71 |
<%= content_tag(:h4, (t 'mission.no_agent_selected')+'') %> |
| 72 | 72 |
<% end %> |
| 73 | 73 |
<%= content_tag(:div, class: 'thumbnail-open-agent-slot') do %> |
| 74 |
- <%= link_to (t 'mission.apply_for_position'), '#', class: 'btn' %> |
|
| 74 |
+ <%= link_to (t 'mission.apply_for_position'), take_agent_role_path(@mission, agent), class: 'btn' %> |
|
| 75 | 75 |
<% end %> |
| 76 | 76 |
<% end %> |
| 77 | 77 |
<% end %> |
@@ -25,6 +25,7 @@ Avalanche2::Application.routes.draw do |
||
| 25 | 25 |
resources :missions |
| 26 | 26 |
get '/missions/:id/agents', to: 'missions#show_agents', as: :mission_agents_list |
| 27 | 27 |
get 'missions/:id/agents/:agent', to: 'missions#show_agent_details', as: :mission_agent_details |
| 28 |
+ get 'missions/:id/agents/:agent/take_agent_role', to: 'missions#take_agent_role', as: :take_agent_role |
|
| 28 | 29 |
|
| 29 | 30 |
# Admin Panel |
| 30 | 31 |
get "admin/dashboard" => "admin_panel#dashboard", :as => :admin_dashboard |